package com.train.order.req.confirm;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ConfirmOrderTicketReq {

    @NotNull(message = "余票id不能为空")
    private Long id;

    /**
     * 车次日期
     */
    @NotNull(message = "车次日期不能为空")
    private LocalDate date;

    /**
     * 车次
     */
    @NotBlank(message = "车次不能为空")
    private String trainCode;

    /**
     * 出发站
     */
    @NotBlank(message = "出发站不能为空")
    private String start;

    /**
     * 到达站
     */
    @NotBlank(message = "到达站不能为空")
    private String end;

    /**
     * 出发站时间
     */
    @NotNull(message = "出发站时间不能为空")
    private LocalTime startTime;

    /**
     * 到达站时间
     */
    @NotNull(message = "到达站时间不能为空")
    private LocalTime endTime;

    /**
     * 乘客购票列表
     */
    @NotEmpty(message = "乘客购票列表不能为空")
    @Size(min = 1, max = 5, message = "至少需要1张买票, 最多购买5张票")
    private List<ConfirmOrderTicketReq.PassengerTicket> ticketList;

    /**
     * 验证码token
     */
//    @NotBlank(message = "验证码token不能为空")
    private String captchaToken;

    /**
     * 验证码
     */
//    @NotBlank(message = "验证码不能为空")
    private String captcha;

    /**
     * 乘客信息
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class PassengerTicket {

        /**
         * 乘客id
         */
        @NotNull(message = "乘客id不能为空")
        private Long passengerId;

        /**
         * 乘客类型
         */
        @NotNull(message = "乘客类型不能为空")
        private Integer passengerType;

        /**
         * 座位类型
         */
        @NotNull(message = "座位类型不能为空")
        private Integer seatTypeCode;

        /**
         * 乘客姓名
         */
        @NotBlank(message = "乘客姓名不能为空")
        private String passengerName;

        /**
         * 乘客身份证
         */
        @NotBlank(message = "乘客身份证不能为空")
        private String passengerIdCard;

        /**
         * 乘客座位
         */
        private String seat;
    }
}
